Despite significant improvements, the data rates of modern networks are generally not capable of supporting lossless, real-time communication of high-quality data signals, such as high-resolution video signals and uncompressed audio signals. Consequently, in many real-time communication systems, signal quality and signal reliability are often sacrificed to meet the timing constraints imposed by real-time systems.
As illustrated in FIG. 1, in a real-time communication system, a digital representation of a real-world, analog input signal 10 is communicated from a sending device 12 to a receiving device 14. For example, the sending device 12 may be a digital telephone device (e.g., a Voice over Internet Protocol (VoIP) phone), or a video conferencing device. Generally, the sending device 12 has a sensing component (e.g., microphone and/or camera) that captures an analog input signal 10, and converts the analog signal 10 into a digital signal 18.
In order to meet the timing constraints of a real-time system, the digital representation of the input (e.g., digital signal 18) is typically transformed by a digital signal processor 22 into a digital format (e.g., compressed digital signal 20) that is suitable for communication over a real-time communication channel. This transformation may involve compressing the data, for example, with a lossy data-compression algorithm, thereby resulting in signal degradation. In this context, a lossy data-compression algorithm is any data-compression algorithm that does not allow the exact original data to be reconstructed from the compressed data. This can be contrasted to a lossless data-compression algorithm, which is a class of data-compression algorithms that allow the exact original data to be reconstructed from the compressed data. When a lossy data-compression algorithm is used, the digital representation of the input that is received at the receiving device 14 (e.g., compressed digital signal 20) has less information than the digital representation of the input (e.g., digital signal 18) that is initially generated by the sensing component 16 of the sending device 12. Consequently, the perceived quality of the signal (e.g., audio or video) is less, from the perspective of a user of the receiving device 14, than what it might be at the sending device 12.
Another reason that signal quality suffers at a receiving device in a real-time communication system is that data may be lost or altered in transmission, or the data may be received out of order. For example, many real-time communication systems are implemented with communication protocols that do not guarantee data sent from the sending device are actually received at the receiving device, and received in the order sent. Furthermore, some communication protocols do not guarantee that the data sent are not modified in transmission such that the data received are not guaranteed to be identical to the data sent. Such communication protocols are said to be unreliable communication protocols. In contrast, a reliable communication protocol is one that guarantees that the data sent from the sending device 12 will arrive intact at the receiving device 14, and in the same order as sent. Reliable communication protocols typically require more processing overhead and therefore are generally slower than unreliable communication protocols, which do not guarantee data will arrive intact at the receiving device. Therefore, to meet real-time timing constraints, real-time communication systems often use unreliable communication protocols. Consequently, data packets that are lost (e.g., lost data packet 24 in FIG. 1) on route to the receiving device 14 are never delivered to the receiving device 14. These lost packets of data are sometimes referred to as “holes” in the data stream. Although there are techniques for reducing the effects of an occasional lost data packet or hole, generally lost data has a negative overall effect on the listening or viewing experience.
The signal degradation resulting from data compression and lost data packets not only makes the user experience less enjoyable, it also affects the ability to perform further signal processing at the receiving device. For example, the accuracy of a speech recognition processor is dependent upon the quality of the input signal it receives. Consequently, if a real-time signal is processed at the receiving device 14 by a speech recognition processor, the recognition accuracy will likely be less than if the original signal (e.g., digital signal 18) was processed at the sending device 12.